const express = require('express');
const Product = require('../models/Product'); // 确保已更新Product模型以使用连接池
const router = express.Router();

// 获取所有商品
router.get('/', async(req, res) => {
    try {
        const products = await Product.getAll();
        res.json(products);
    } catch (error) {
        console.error("获取所有商品时发生错误:", error);
        res.status(500).json({ error: '获取商品列表失败', details: error.message });
    }
});

// 添加商品
router.post('/', async(req, res) => {
    try {
        const newProduct = req.body;
        const addedProduct = await Product.add(newProduct);
        res.status(201).json({ message: '商品添加成功', product: addedProduct });
    } catch (error) {
        console.error("添加商品时发生错误:", error);
        if (error.message.includes('缺少必需的产品信息')) {
            res.status(400).json({ error: error.message });
        } else {
            res.status(500).json({ error: '添加商品失败', details: error.message });
        }
    }
});

// 根据ID获取商品详情
router.get('/:id', async(req, res) => {
    try {
        const productId = req.params.id;
        const product = await Product.getById(productId);
        if (!product) {
            return res.status(404).json({ error: '商品未找到' });
        }
        res.json(product);
    } catch (error) {
        console.error(`获取商品ID ${req.params.id} 详情时发生错误:`, error);
        res.status(500).json({ error: '获取商品详情失败', details: error.message });
    }
});

// 更新商品
router.put('/:id', async(req, res) => {
    try {
        const productId = req.params.id;
        const updates = req.body;
        const updatedProduct = await Product.update(productId, updates);
        res.json({ message: '商品更新成功', product: updatedProduct });
    } catch (error) {
        console.error(`更新商品ID ${req.params.id} 时发生错误:`, error);
        res.status(500).json({ error: '更新商品失败', details: error.message });
    }
});

// 删除商品
router.delete('/:id', async(req, res) => {
    try {
        const productId = req.params.id;
        await Product.delete(productId);
        // 正确的做法是仅发送204，没有响应体
        res.sendStatus(204);
    } catch (error) {
        console.error(`删除商品ID ${req.params.id} 时发生错误:`, error);
        res.status(500).json({ error: '删除商品失败', details: error.message });
    }
});

module.exports = router;